package com.ityedao.递归;

import java.io.File;
import java.io.IOException;

public class SearchFileCase {
    public static void main(String[] args) throws IOException {
        searchFile(new File("F:/"), "QQ.exe");
    }

    /**
     * 去目录下搜索某个文件
     * @param dir 目录
     * @param fileName 要搜索的文件名
     */
    public static void searchFile(File dir, String fileName) throws IOException {
        // 1、把非法情况都拦截
        if (dir == null || !dir.exists() || dir.isFile()){
            return; // 代表无法搜索
        }

        // 2、dir不是null，存在，一定是目录对象
        // 获取当前目录下的全部一级文件对象
        File[] files = dir.listFiles();

        // 3、判断当前目录下是否存在一级文件对象，以及是否能够拿到一级文件对象
        if (files != null && files.length > 0){
            // 4、遍历全部一级对象
            for (File f : files) {
                // 5、判断文件是否是文件，还是文件夹
                if (f.isFile() && f.getName().contains(fileName)){
                    System.out.println("找到了：" + f.getAbsolutePath());
                }else {
                    searchFile(f, fileName);
                }

//                if (f.isDirectory()){
//                    // 是文件夹，继续重复这个过程（递归）
//                    searchFile(f, fileName);
//                    }else {
//                    // 是文件，判断这个文件名是否是我们要的
//                    if (f.getName().contains(fileName)){
//                        System.out.println("找到了：" + f.getAbsolutePath());
//                        Runtime runtime = Runtime.getRuntime();
//                        runtime.exec(f.getAbsolutePath());
//                    }
//                }
            }
        }

    }
}
